iT邦幫忙

0

React從0開始-Day4 JSX

  • 分享至 

  • xImage
  •  

每個組件只能回傳一個元素 (物件),他不能同時回傳多個元素

說明: 代表一個元素,如果沒有用把三個元素包進一個元素裡,程式會報錯 ( javaScript本身的語法限制)

function App() {
  
  return (
   //<div>
    <MyComponent />
    <MyComponent />
    <MyComponent />
    //</div> 
  )
}

不過在html中沒有額外功能,所以在react中可以允許單純使用<></>來包裹元素

附圖:html內不會有多餘的div元素
https://ithelp.ithome.com.tw/upload/images/20251015/20170075ErUwbQS8Br.png
這種空標籤<></>稱為Fragment,也可以算是一種 javaScript的物件

可以利用 { } 在html中寫javaScript,而也可以在裡面寫函數,

function MyComponent(){
  return <h1>你好</h1>
} 
  
function App() {
  const text = 'hello world';

  return (
   <>
    <h1>{text.toUpperCase()}</h1> //將text轉成大寫的函數
    <MyComponent />
    <MyComponent />
    <MyComponent />
    </> 
  )
}

在html當中,空元素的斜線是可有可無的。但在JSX中,空元素必須要有斜線。也可以在html應用{}

如:

<input type="text" placeholder={text}/>

https://ithelp.ithome.com.tw/upload/images/20251015/20170075ML0LayqIY7.png
在JSX中,有些屬性因為在JavaScript中為關鍵字,所以命名會和JavaScript中不太一樣

例如html中的class,在JSX中會命名為className;html中的for,在JSX中會命名為htmlFor(駝峰式命名法)。

有時候會在JSX中看到使用兩個大括號 {{ }},是在JSX中使用物件。常見為寫在style屬性中 (把css屬性名跟屬性值寫在物件裡)。此方法是利用JavaScript物件來模擬css的一種方式

  • 在css語法寫法:
{
	background-color: red;
}
  • JSX模擬css的寫法:
  <h1 style={{backgroundColor: 'red'}}>{text.toUpperCase()}</h1> 

https://ithelp.ithome.com.tw/upload/images/20251015/2017007581QAQEXCOq.png

而這種直接在html標籤裡面寫css的方式叫做 inline css,通常更常見的方式是獨立css的檔案(App.css),將App.css的內容導入App.jsx當中。能夠導入是因為vite協助把css檔案插入到html當中 ( 正常在JavaScript裡這樣導入會報錯)。

也可以在React中寫事件處理,以點擊按鈕(button)的事件處理為例:

  • 直接把回調函數寫在button裡面

    <button 事件種類={function(){回調函數}}>我是按鈕
    https://ithelp.ithome.com.tw/upload/images/20251015/20170075wLYez3uvAo.png

  • 把回調函數寫在外面,大括號內只放函數名
    https://ithelp.ithome.com.tw/upload/images/20251015/20170075aYQ3lGWnvI.png

學習影片出處:https://youtu.be/aBTiZfShe-4?si=Igb2aKz3sefA97A5


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言